本发明公开了一种在RSVP GR过程中恢复隧道下多条LSP的方法,所述方法包括以下步骤:A、在创建LSP或更新LSP类型时,保存所述LSP的类型信息;B、在隧道头节点LSRA重启后,根据保存的LSP类型信息,恢复所述隧道头节点下多条LSP的状态。本发明还公开了一种在RSVP GR过程中恢复隧道下多条LSP的装置。对于隧道下存在多条LSP的情况,本发明通过在创建LSP或更新LSP类型时保存所述LSP的类型信息的方法,在头节点LSR重启后,接收到下游邻居的RecoveryPath消息时区分出当前待恢复的LSP的类型,并根据保存的LSP类型信息,恢复所述隧道头节点下多条LSP的状态。
1.一种在RSVPxa0GR过程中恢复隧道下多条LSP的方法,其特征在于,所述方法包括以下步骤:A、在创建LSP或更新LSP类型时,保存所述LSP的类型信息;B、在隧道头节点LSRA重启后,根据保存的LSP类型信息,恢复所述隧道头节点下多条LSP的状态。
2.如权利要求1所述的在RSVPxa0GR过程中恢复隧道下多条LSP的方法,其特征在于,所述步骤A具体包括:A1、所述隧道头节点根据创建的LSP的类型,更新流量工程管理信息基础TE-MIB本地隧道表tunnelTable,并向邻节点发送路径消息,所述tunnelTable中包含LSP的类型字段;A2、所述隧道头节点根据收到的Resv消息,判断所述Resv消息是否对应于MBB新建的LSP,如果是,则转步骤A3,否则转步骤A4;A3、MBB处理,将原有的工作LSP转换为待删除LSP,修改tunnelTable中的LSP的类型信息,并将修改后的携带LSP的类型信息的转发表项发送到支撑RTM;A4、所述隧道头节点向支撑RTM下发新建LSP的携带LSP的类型信息的转发表项;A5、所述支撑RTM保存所述LSP的类型信息。
3.如权利要求2所述的在RSVPxa0GR过程中恢复隧道下多条LSP的方法,其特征在于,所述步骤A5具体包括:所述支撑RTM保存携带LSP的类型信息的转发表项,并同步到备板。
4.如权利要求1至3任一项所述的在RSVPxa0GR过程中恢复隧道下多条LSP的方法,其特征在于,所述步骤B具体包括:B1、所述支撑RTM获取LSP的类型信息;B2、所述隧道头节点查询所述支撑RTM,得知保留住了转发状态,则向邻节点通告本节点进入恢复流程;B3、所述隧道头节点接收邻节点的RecoveryPath消息,根据出标签和出接口从所述支撑RTM获取LSP的类型信息;B4、所述隧道头节点根据获取的LSP的类型信息,更新tunnelTable,并向邻节点发送路径消息;B5、所述隧道头节点收到邻节点的Resv消息后,向支撑RTM下发对应LSP的携带LSP的类型信息的转发表项。
5.如权利要求4所述的在RSVPxa0GR过程中恢复隧道下多条LSP的方法,其特征在于,所述步骤B1具体包括:所述支撑RTM从备板上获取并保存携带LSP的类型信息的转发表项。
6.一种在RSVPxa0GR过程中恢复隧道下多条LSP的装置,其特征在于,所述装置包括:类型信息存储单元,用于在创建LSP或更新LSP类型时,保存所述LSP的类型信息;状态恢复单元,用于在隧道头节点LSRA重启后,根据所述类型信息存储单元保存的LSP类型信息,恢复所述隧道头节点下多条LSP的状态。
7.如权利要求6所述的在RSVPxa0GR过程中恢复隧道下多条LSP的装置,其特征在于,所述类型信息存储单元包括:本地隧道表更新子单元,用于根据创建的LSP的类型,更新流量工程管理信息基础TE-MIB本地隧道表tunnelTable,并向邻节点发送路径消息,所述tunnelTable中包含LSP的类型字段;MBB新建LSP判断子单元,用于根据收到的Resv消息,判断所述Resv消息是否对应于MBB新建的LSP;转发表项下发子单元,用于向支撑RTM下发新建LSP的携带LSP的类型信息的转发表项;转发表项同步子单元,用于同步支撑RTM保存的携带LSP的类型信息的转发表项。
8.如权利要求7所述的在RSVPxa0GR过程中恢复隧道下多条LSP的装置,其特征在于,所述类型信息存储单元还包括:MBB处理子单元,用于将原有的工作LSP转换为待删除LSP,修改tunnelTable中的LSP的类型信息,并将修改后的携带LSP的类型信息的转发表项通过转发表项下发子单元发送到支撑RTM。
9.如权利要求7所述的在RSVPxa0GR过程中恢复隧道下多条LSP的装置,其特征在于,所述转发表项同步子单元位于备板上。
10.如权利要求7至9任一项所述的在RSVPxa0GR过程中恢复隧道下多条LSP的装置,其特征在于,所述状态恢复单元包括:转发状态查询子单元,用于查询支撑RTM,得知保留住了转发状态,则向邻节点通告本节点进入恢复流程;LSP的类型信息获取子单元,用于接收邻节点的RecoveryPath消息,根据出标签和出接口从所述支撑RTM获取LSP的类型信息;恢复控制子单元,用于根据获取的LSP的类型信息,控制所述本地隧道表更新子单元更新tunnelTable,并向邻节点发送路径消息;在收到邻节点的Resv消息后,控制所述转发表项下发子单元向支撑RTM下发对应LSP的携带LSP的类型信息的转发表项。
技术领域本发明涉及数据网络通信技术领域,特别是涉及在RSVP(Resourcexa0ReSerVationxa0Protocol,资源预留协议)GR(Gracefulxa0Restart,优雅重启)过程中恢复隧道下多条LSP(Labelxa0Switchxa0Path,标记交换路径)的方法及装置。
背景技术在实际的网络中,当LSR(Labelxa0Switchxa0Router,标记交换路由器)的RSVP-TE(Resourcexa0ReSerVationxa0Protocol-Trafficxa0Engineering,基于流量工程扩展的资源预留协议)控制层面重启,重启的LSR不但丢失RSVP-TE控制状态,也会删除相关的所有已经建立的LSP隧道的MPLS(Multiprotocoxa0Labelxa0Switching,多协议标签交换)转发状态。这就意味着在相关LSP隧道上的数据流转发中断。这种由于RSVP-TE控制层面重启带来的结果不仅只在重启的LSR上,同样影响着邻居LSR。因为在RSVP-TE控制层面故障后,重启的LSR在一段时间里不能发送或接收刷新消息和响应邻居的HELLO消息。当邻居接收刷新消息和HELLO消息失败,邻居也会删除所有相关LSP的RSVP-TE控制和MPLS转发状态。总之,RSVP-TE控制层面重启会导致重启LSR和其邻居的MPLS数据流中断。为了减少上述RSVP-TE控制层面重启带来的影响,可以采用RSVP-TExa0GR机制来解决。该机制允许LSR在实际的重启前向RSVP-TE邻居指明在RSVP-TE控制层面重启后保护MPLS转发状态的能力。然后,当LSR的RSVP-TE控制层面重启之后,LSR会丢失RSVP-TE控制状态,但LSR继续使用先前建立的LSP隧道的MPLS转发状态来转发数据。当邻居探测到该LSR的RSVP-TE控制层面的重启,邻居会继续保持所有相关的LSP隧道的控制和转发状态并且同先前一样转发流量。当控制层面的重启已经完成,重启的LSR会同先前的邻居重建HELLO通信和重新同步RSVP-TE控制状态,这就避免了MPLS数据流的中断。RFC5063定义了RecoveryPath消息来支持头节点LSR重启后的LSP状态的恢复。但对于隧道下存在多条LSP的情况,头节点LSR重启后,接收到下游邻居的RecoveryPath消息并不能区分出当前待恢复的LSP的类型。例如以下的情况:(1)对于隧道内的端到端(end-to-end)保护,一条隧道下会同时存在workingxa0LSP(A-B-C-D)和protectingxa0LSP(A-E-D)。在protectingxa0LSP对workingLSP已经形成保护;或者形成端到端保护后由于检测到workingxa0LSP链路发生故障而发生了切换,导致流量经过protectingxa0LSP的情况下,此时在隧道头节点进行控制层面重启。如图1所示。(2)隧道MBB(Make-before-break,先合后开)的例子。MBB指的是新创建一条LSP(比如发现了一条比原有路径更优的路径:A-B-C-D),当新LSP创建成功后再拆除原来的LSP(A-E-C-D),使得流量平滑地切换到这条更优路径上。新的LSP创建成功而成为workingxa0LSP,原有的workingxa0LSP成为deletingLSP(待删除LSP)并且在等待延时删除,此时在隧道头节点进行控制层面重启。如图2所示。如图3所示,在支持RSVPxa0GR的前提下,面对上述情况对于来自下游邻居的RecoveryPath消息,头节点无法区分出该RecoveryPath消息对应于是workingxa0LSP、protectingxa0LSP还是deletingxa0LSP,所以会造成只能恢复一条LSP或者错误地恢复了LSP的问题,比如把deletingxa0LSP恢复成了workingxa0LSP。
发明内容本发明要解决的问题是提供一种在RSVPxa0GR过程中恢复隧道下多条LSP的方法及装置,以克服现有技术中对于隧道下存在多条LSP的情况,头节点LSR重启后,接收到下游邻居的RecoveryPath消息并不能区分出当前待恢复的LSP的类型的缺陷。为达到上述目的,本发明的技术方案提供一种在RSVPxa0GR过程中恢复隧道下多条LSP的方法,所述方法包括以下步骤:A、在创建LSP或更新LSP类型时,保存所述LSP的类型信息;B、在隧道头节点LSRA重启后,根据保存的LSP类型信息,恢复所述隧道头节点下多条LSP的状态。进一步,所述步骤A具体包括:A1、所述隧道头节点根据创建的LSP的类型,更新流量工程管理信息基础TE-MIB本地隧道表tunnelTable,并向邻节点发送路径消息,所述tunnelTable中包含LSP的类型字段;A2、所述隧道头节点根据收到的Resv消息,判断所述Resv消息是否对应于MBB新建的LSP,如果是,则转步骤A3,否则转步骤A4;A3、MBB处理,将原有的工作LSP转换为待删除LSP,修改tunnelTable中的LSP的类型信息,并将修改后的携带LSP的类型信息的转发表项发送到支撑RTM;A4、所述隧道头节点向支撑RTM下发新建LSP的携带LSP的类型信息的转发表项;A5、所述支撑RTM保存所述LSP的类型信息。进一步,所述步骤A5具体包括:所述支撑RTM保存携带LSP的类型信息的转发表项,并同步到备板。进一步,所述步骤B具体包括:B1、所述支撑RTM获取LSP的类型信息;B2、所述隧道头节点查询所述支撑RTM,得知保留住了转发状态,则向邻节点通告本节点进入恢复流程;B3、所述隧道头节点接收邻节点的RecoveryPath消息,根据出标签和出接口从所述支撑RTM获取LSP的类型信息;B4、所述隧道头节点根据获取的LSP的类型信息,更新tunnelTable,并向邻节点发送路径消息;B5、所述隧道头节点收到邻节点的Resv消息后,向支撑RTM下发对应LSP的携带LSP的类型信息的转发表项。进一步,所述步骤B1具体包括:所述支撑RTM从备板上获取并保存携带LSP的类型信息的转发表项。本发明的技术方案还提供一种在RSVPxa0GR过程中恢复隧道下多条LSP的装置所述装置包括:类型信息存储单元,用于在创建LSP或更新LSP类型时,保存所述LSP的类型信息;状态恢复单元,用于在隧道头节点LSRA重启后,根据所述类型信息存储单元保存的LSP类型信息,恢复所述隧道头节点下多条LSP的状态。进一步,所述类型信息存储单元包括:本地隧道表更新子单元,用于根据创建的LSP的类型,更新流量工程管理信息基础TE-MIB本地隧道表tunnelTable,并向邻节点发送路径消息,所述tunnelTable中包含LSP的类型字段;MBB新建LSP判断子单元,用于根据收到的Resv消息,判断所述Resv消息是否对应于MBB新建的LSP;转发表项下发子单元,用于向支撑RTM下发新建LSP的携带LSP的类型信息的转发表项;转发表项同步子单元,用于同步支撑RTM保存的携带LSP的类型信息的转发表项。进一步,所述类型信息存储单元还包括:MBB处理子单元,用于将原有的工作LSP转换为待删除LSP,修改tunnelTable中的LSP的类型信息,并将修改后的携带LSP的类型信息的转发表项通过转发表项下发子单元发送到支撑RTM。进一步,所述转发表项同步子单元位于备板上。进一步,所述状态恢复单元包括:转发状态查询子单元,用于查询支撑RTM,得知保留住了转发状态,则向邻节点通告本节点进入恢复流程;LSP的类型信息获取子单元,用于接收邻节点的RecoveryPath消息,根据出标签和出接口从所述支撑RTM获取LSP的类型信息;恢复控制子单元,用于根据获取的LSP的类型信息,控制所述本地隧道表更新子单元更新tunnelTable,并向邻节点发送路径消息;在收到邻节点的Resv消息后,控制所述转发表项下发子单元向支撑RTM下发对应LSP的携带LSP的类型信息的转发表项。与现有技术相比,本发明有益效果如下:对于隧道下存在多条LSP的情况,本发明通过在创建LSP或更新LSP类型时保存所述LSP的类型信息的方法,在头节点LSR重启后,接收到下游邻居的RecoveryPath消息时区分出当前待恢复的LSP的类型,并根据保存的LSP类型信息,恢复所述隧道头节点下多条LSP的状态。
附图说明图1是现有技术的一种形成端到端保护的拓扑结构图;图2是现有技术的一种进行MBB处理的拓扑结构图;图3是现有技术的一种隧道头节点LSRxa0A发生重启后的RSVPxa0GR流程图;图4是本发明实施例的一种在RSVPxa0GR过程中恢复隧道下多条LSP的方法的流程图;图5是本发明实施例的一种在RSVPxa0GR过程中恢复隧道下多条LSP的装置的结构图。
具体实施方式下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。实施例一本发明实施例的一种在RSVPxa0GR过程中恢复隧道下多条LSP的方法如图4所示,本实施例是对图1所示的拓扑结构中隧道内的端到端(end-to-end)保护,一条隧道下会同时存在workingxa0LSP(A-B-C-D)和protectingxa0LSP(A-E-D)的情况进行处理的,参照图1和图4,本实施例包括以下步骤:步骤s401,RSVP隧道头节点A创建LSP,根据创建的LSP的类型更新TE-MIB(Trafficxa0Engineeringxa0Managementxa0Informationxa0ba
se,流量工程管理信息基础)本地隧道表tunnelTable,并向邻节点发送Path消息。所述tunnelTable中包含LSP的类型字段,本实施例中在tunnelTable中扩展一个字段用来记录LSP的类型,当本地创建不同类型的LSP时标记其LSP类型:对于workingxa0LSP,其类型可以标识为TYPE_WORKING;对于protectingxa0LSP,其类型可以标识为TYPE_PROTECTING。步骤s402,隧道头节点根据收到的Resv消息,判断所述Resv消息是否对应于MBB新建的LSP,如果是,则转步骤s403,否则转步骤s404。本实施例中所述Resv消息不是对应于MBB新建的LSP,因此转步骤s404。步骤s404,隧道头节点A向支撑RTM(Routexa0Tablexa0Manager,路由表管理模块)下发新建LSP的携带LSP的类型信息的转发表项。步骤s405,支撑RTM保存所述LSP的类型信息。本实施例中支撑RTM保存携带LSP的类型信息的转发表项,并同步到备板。步骤s406,支撑RTM获取LSP的类型信息。本实施例中,RSVP隧道下protectingxa0LSP为workingxa0LSP形成了端到端的保护,此时隧道头节点A发生了主备倒换,当隧道头节点A备板上的协议重新加载后,支撑RTM从备板上获取并保存转发表项。步骤s407,隧道头节点查询所述支撑RTM,得知保留住了转发状态,则向邻节点B和E通告本节点进入恢复流程。步骤s408,隧道头节点接收邻节点的RecoveryPath消息,根据出标签和出接口从支撑RTM获取LSP的类型信息。本实施例中隧道头节点Axa0RSVP如果收到邻节点B的RecoveryPath消息,通过出标签和出接口向支撑RTM查询转发表项的lsp_type(值为TYPE_WORKING);如果收到邻节点E的RecoveryPath消息,通过出标签和出接口向支撑RTM查询转发表项的lsp_type(值为TYPE_PROTECTING)。步骤s409,隧道头节点根据获取的LSP的类型信息,更新tunnelTable,并向邻节点发送Path消息。本实施例中,当查询转发表项的lsp_type值为TYPE_WORKING时,RSVP设置tunnelTable的lsp_type赋值为TYPE_WORKING,然后向下游节点B发送Path消息;当查询转发表项的lsp_type值为TYPE_PROTECTING时,RSVP设置tunnelTable的lsp_type赋值为TYPE_PROTECTING,然后向下游节点E发送Path消息。步骤s410,隧道头节点收到邻节点的Resv消息后,向支撑RTM下发对应LSP的携带LSP的类型信息的转发表项。本实施例中,RSVP隧道头节点收到下游节点B的Resv消息后,向支撑RTM下发对应workingxa0LSP的lsp_type为TYPE_WORKING的转发表项;收到下游节点E的Resv消息后,向支撑RTM下发protectingxa0LSP的lsp_type为TYPE_PROTECTING的转发表项。至此RSVP隧道头节点的workingxa0LSP和protectingxa0LSP的状态重新同步完成。实施例二本实施例是对图2所示的拓扑结构中MBB新创建一条LSP(A-B-C-D),再拆除原来的LSP(A-E-C-D)的情况进行处理的,参照图2和图4,本实施例与实施例一相比,主要有以下区别:在步骤s401中,对于workingxa0LSP,其类型可以标识为TYPE_WORKING;对于MBB中待删除的LSP,其类型可以标识为TYPE_DELETING。在步骤s402中,本实施例中所述Resv消息对应于MBB新建的LSP,因此转步骤s403。步骤s403为:MBB处理,将原有的工作LSP转换为待删除LSP,修改tunnelTable中的LSP的类型信息,并将修改后的携带LSP的类型信息的转发表项发送到支撑RTM。在步骤s408中,如果收到邻节点E的RecoveryPath消息,通过出标签和出接口向支撑RTM查询转发表项的lsp_type(值为TYPE_DELETING)。在步骤s409中,当查询转发表项的lsp_type值为TYPE_DELETING时,RSVP设置tunnelTable的lsp_type赋值为TYPE_DELETING。在步骤s410中,RSVP隧道头节点收到下游节点E的Resv消息后,向支撑RTM下发protectingxa0LSP的lsp_type为TYPE_DELETING的转发表项。本发明实施例的一种在RSVPxa0GR过程中恢复隧道下多条LSP的装置如图5所示,包括:类型信息存储单元和状态恢复单元,类型信息存储单元用于在创建LSP或更新LSP类型时,保存所述LSP的类型信息;状态恢复单元用于在隧道头节点LSRA重启后,根据类型信息存储单元保存的LSP类型信息,恢复所述隧道头节点下多条LSP的状态。类型信息存储单元包括本地隧道表更新子单元、MBB新建LSP判断子单元、转发表项下发子单元、转发表项同步子单元和MBB处理子单元,其中MBB新建LSP判断子单元分别与本地隧道表更新子单元和MBB处理子单元连接,转发表项下发子单元分别与MBB新建LSP判断子单元、MBB处理子单元和支撑RTM连接,转发表项同步子单元与支撑RTM连接。本地隧道表更新子单元用于根据创建的LSP的类型,更新TE-MIBtunnelTable,并向邻节点发送路径消息,所述tunnelTable中包含LSP的类型字段。MBB新建LSP判断子单元用于根据收到的Resv消息,判断所述Resv消息是否对应于MBB新建的LSP。转发表项下发子单元用于向支撑RTM下发新建LSP的携带LSP的类型信息的转发表项。转发表项同步子单元用于同步支撑RTM保存的携带LSP的类型信息的转发表项,所述转发表项同步子单元位于备板上。MBB处理子单元用于将原有的工作LSP转换为待删除LSP,修改tunnelTable中的LSP的类型信息,并将修改后的携带LSP的类型信息的转发表项通过转发表项下发子单元发送到支撑RTM。状态恢复单元包括转发状态查询子单元、LSP的类型信息获取子单元和恢复控制子单元,其中转发状态查询子单元分别与LSP的类型信息获取子单元和支撑RTM连接,LSP的类型信息获取子单元分别与恢复控制子单元和支撑RTM连接,恢复控制子单元分别与本地隧道表更新子单元和转发表项下发子单元连接。转发状态查询子单元用于查询支撑RTM,得知保留住了转发状态,则向邻节点通告本节点进入恢复流程。LSP的类型信息获取子单元用于接收邻节点的RecoveryPath消息,根据出标签和出接口从所述支撑RTM获取LSP的类型信息。恢复控制子单元用于根据获取的LSP的类型信息,控制所述本地隧道表更新子单元更新tunnelTable,并向邻节点发送路径消息;在收到邻节点的Resv消息后,控制所述转发表项下发子单元向支撑RTM下发对应LSP的携带LSP的类型信息的转发表项。对于隧道下存在多条LSP的情况,本发明通过在创建LSP或更新LSP类型时保存所述LSP的类型信息的方法,在头节点LSR重启后,接收到下游邻居的RecoveryPath消息时区分出当前待恢复的LSP的类型,并根据保存的LSP类型信息,恢复所述隧道头节点下多条LSP的状态。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。